<?php
/**
 * http://map.yahooapis.jp/OpenLocalPlatform/V1/location
 * 1.日本測地系座標からマップコードを取得する
 */
class Yahoo_OpenLocalPlatform_V1_location
{
	public $マップコード;
	public $パソコンURL;
	public $携帯URL;
	public $スマホURL;
	public $最寄り駅;

	const Y_MAP_CODE_API_URL = 'http://map.yahooapis.jp/OpenLocalPlatform/V1/location?output=xml&appid=xVTiupOxg655iTFEF4yh0rlNPu2F8c4W3BeFXdoig5zRjq0wFG_YHRzqHkjm7FQ-&lon=%s&lat=%s&detail=full';
	const WGS_CONV_API_URL = 'http://datum.search.olp.yahooapis.jp/OpenLocalPlatform/V1/datumConvert?appid=xVTiupOxg655iTFEF4yh0rlNPu2F8c4W3BeFXdoig5zRjq0wFG_YHRzqHkjm7FQ-&coordinates=%s,%s&datum=wgs';
	protected $_mapcodevalue = '';

	public function __construct($lon, $lat)
	{
		$yGeo = self::ヤフーロケーションAPIを呼び出す($lon, $lat);
		$yGeoXml = new SimpleXMLElement($yGeo);
		$this->マップコード = $yGeoXml->Feature->Property->Detail->MapCode;
		$this->パソコンURL = $yGeoXml->Feature->Property->Detail->PcUrl1;
		$this->携帯URL = $yGeoXml->Feature->Property->Detail->MobileUrl1;
		$this->スマホURL = $yGeoXml->Feature->Property->Detail->SmartPhoneUrl1;
		foreach ($yGeoXml->Feature->Property->Station as $Station) {
			$this->最寄り駅[] = "{$Station->Railway}{$Station->Name}駅{$Station->Exit}から{$Station->Time}分";
		}
	}

	protected function 日本測地系から世界測地系に変換する($lon,$lat)
	{
		$xml = $this->世界測地系変換APIからXMLを取得($lon, $lat);
		$simpleXml = new SimpleXMLElement($xml);
		$LatLon = $simpleXml->Feature->Geometry->Coordinates;
		$divide = explode(',', $LatLon);
		$result = array('lon'=>$divide[0],'lat'=>$divide[1]);
		return $result;
	}

	protected function 世界測地系変換APIからXMLを取得($lon , $lat)
	{
		/***スタブ***/
		return file_get_contents(__DIR__.'/toWgs.xml');
		/***スタブ**/
		$url = sprintf(self::WGS_CONV_API_URL, $lon, $lat);
		$ch = curl_init($url);
		curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
		$c = curl_exec ( $ch );
		curl_close($ch);
		return $c;
	}

	public static function ヤフーロケーションAPIを呼び出す($lon, $lat)
	{
		/***スタブ***/
		return file_get_contents(__DIR__.'/ymapcode.xml');
		/***スタブ**/
		$url = sprintf(self::Y_MAP_CODE_API_URL, $lon, $lat);
		$ch = curl_init($url);
		curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
		$c = curl_exec ( $ch );
		curl_close($ch);
		return $c;
	}
}

/*ユニットテストブロック V2*/
if (class_exists('ユニットテストケース')) {
	class ユニークな名前_test extends ユニットテストケース
	{
		protected $テストするクラス名='TestClassName';
		//ここがテストケースの記載場所
	}
}